package com.wonders.ghy.juc.volatile_不稳定的.指令重排;

public class ReSortSeqDemo {
    int a = 0;
    boolean b = false;
    public void method01(){
        a=1;
        b=true;
    }

    /**
     * 多线程环境中由于指令重拍的存在两个线程中使用的变量
     * 能否保证一致性是无法确定的，结果无法预测，那么就要在
     * b上加上volatile修饰 来提醒其他线程更新保证内存可见性
     */
    public void method02(){
        if (b){
            a=a+5;
            System.out.println("aaaaaaaaaaaa"+a);
        }
    }
    public static void main(String[] args) {
        ReSortSeqDemo reSortSeqDemo = new ReSortSeqDemo();
        new Thread(()->{reSortSeqDemo.method01();reSortSeqDemo.method02();},"a").start();
        new Thread(()->{reSortSeqDemo.method01();reSortSeqDemo.method02();},"b").start();
        new Thread(()->{reSortSeqDemo.method01();reSortSeqDemo.method02();},"c").start();
    }
}
